package com.xyy.kingdeek3cloud.entity.erp;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@NoArgsConstructor
@Data

public class SaveCustomerDto {

    @JsonProperty("NeedUpDateFields")
    private List<?> needUpDateFields;
    @JsonProperty("NeedReturnFields")
    private List<?> needReturnFields;
    @JsonProperty("IsDeleteEntry")
    private String isDeleteEntry;
    @JsonProperty("SubSystemId")
    private String subSystemId;
    @JsonProperty("IsVerifyBaseDataField")
    private String isVerifyBaseDataField;
    @JsonProperty("IsEntryBatchFill")
    private String isEntryBatchFill;
    @JsonProperty("ValidateFlag")
    private String validateFlag;
    @JsonProperty("NumberSearch")
    private String numberSearch;
    @JsonProperty("IsAutoAdjustField")
    private String isAutoAdjustField;
    @JsonProperty("InterationFlags")
    private String interationFlags;
    @JsonProperty("IgnoreInterationFlag")
    private String ignoreInterationFlag;
    @JsonProperty("IsControlPrecision")
    private String isControlPrecision;
    @JsonProperty("ValidateRepeatJson")
    private String validateRepeatJson;
    @JsonProperty("Model")
    private ModelDTO model;

    @NoArgsConstructor
    @Data
    public static class ModelDTO {
        @JsonProperty("FCUSTID")
        private Integer fcustid;
        @JsonProperty("FName")
        private String fName;
        @JsonProperty("FShortName")
        private String fShortName;
        @JsonProperty("FCOUNTRY")
        private FCOUNTRYDTO fcountry;
        @JsonProperty("FADDRESS")
        private String faddress;
        @JsonProperty("FCompanyClassify")
        private FCompanyClassifyDTO fCompanyClassify;
        @JsonProperty("FCompanyNature")
        private FCompanyNatureDTO fCompanyNature;
        @JsonProperty("FINVOICETITLE")
        private String finvoicetitle;
        @JsonProperty("FTAXREGISTERCODE")
        private String ftaxregistercode;
        @JsonProperty("FINVOICEBANKNAME")
        private String finvoicebankname;
        @JsonProperty("FINVOICETEL")
        private String finvoicetel;
        @JsonProperty("FINVOICEBANKACCOUNT")
        private String finvoicebankaccount;
        @JsonProperty("FINVOICEADDRESS")
        private String finvoiceaddress;
        @JsonProperty("FIsGroup")
        private Boolean fIsGroup;
        @JsonProperty("FIsDefPayer")
        private Boolean fIsDefPayer;
        @JsonProperty("FCustTypeId")
        private FCustTypeIdDTO fCustTypeId;
        @JsonProperty("FTRADINGCURRID")
        private FTRADINGCURRIDDTO ftradingcurrid;
        @JsonProperty("FDescription")
        private String fDescription;
        @JsonProperty("FSALDEPTID")
        private FSALDEPTIDDTO fsaldeptid;
        @JsonProperty("FSELLER")
        private FSELLERDTO fseller;
        @JsonProperty("FSETTLETYPEID")
        private FSETTLETYPEIDDTO fsettletypeid;
        @JsonProperty("FRECCONDITIONID")
        private FRECCONDITIONIDDTO frecconditionid;
        @JsonProperty("FInvoiceType")
        private String fInvoiceType;
        @JsonProperty("FTaxType")
        private FTaxTypeDTO fTaxType;
        @JsonProperty("FPriority")
        private Integer fPriority;
        @JsonProperty("FTaxRate")
        private FTaxRateDTO fTaxRate;
        @JsonProperty("FISCREDITCHECK")
        private Boolean fiscreditcheck;
        @JsonProperty("FIsTrade")
        private Boolean fIsTrade;
        @JsonProperty("FUncheckExpectQty")
        private Boolean fUncheckExpectQty;
        @JsonProperty("FLegalPerson")
        private String fLegalPerson;
        @JsonProperty("FDomains")
        private String fDomains;
        @JsonProperty("FSOCIALCRECODE")
        private String fsocialcrecode;
        @JsonProperty("FRegisterAddress")
        private String fRegisterAddress;
        @JsonProperty("FT_BD_CUSTOMEREXT")
        private FTBDCUSTOMEREXTDTO ftBdCustomerext;
        @JsonProperty("FT_BD_CUSTLOCATION")
        private List<FTBDCUSTLOCATIONDTO> ftBdCustlocation;
        @JsonProperty("FT_BD_CUSTCONTACT")
        private List<FTBDCUSTCONTACTDTO> ftBdCustcontact;
        @JsonProperty("FT_BD_CUSTORDERORG")
        private List<FTBDCUSTORDERORGDTO> ftBdCustorderorg;

        @NoArgsConstructor
        @Data
        @AllArgsConstructor
        public static class FCOUNTRYDTO {
            @JsonProperty("FNumber")
            private String fNumber;
        }

        @NoArgsConstructor
        @Data
        @AllArgsConstructor
        public static class FCompanyClassifyDTO {
            @JsonProperty("FNumber")
            private String fNumber;
        }

        @NoArgsConstructor
        @Data
        @AllArgsConstructor
        public static class FCompanyNatureDTO {
            @JsonProperty("FNumber")
            private String fNumber;
        }

        @NoArgsConstructor
        @Data
        @AllArgsConstructor
        public static class FCustTypeIdDTO {
            @JsonProperty("FNumber")
            private String fNumber;
        }

        @NoArgsConstructor
        @Data
        @AllArgsConstructor
        public static class FTRADINGCURRIDDTO {
            @JsonProperty("FNumber")
            private String fNumber;
        }

        @NoArgsConstructor
        @Data
        @AllArgsConstructor
        public static class FSALDEPTIDDTO {
            @JsonProperty("FNumber")
            private String fNumber;
        }

        @NoArgsConstructor
        @Data
        @AllArgsConstructor
        public static class FSELLERDTO {
            @JsonProperty("FNumber")
            private String fNumber;
        }

        @NoArgsConstructor
        @Data
        @AllArgsConstructor
        public static class FSETTLETYPEIDDTO {
            @JsonProperty("FNumber")
            private String fNumber;
        }

        @NoArgsConstructor
        @Data
        @AllArgsConstructor
        public static class FRECCONDITIONIDDTO {
            @JsonProperty("FNumber")
            private String fNumber;
        }

        @NoArgsConstructor
        @Data
        @AllArgsConstructor
        public static class FTaxTypeDTO {
            @JsonProperty("FNumber")
            private String fNumber;
        }

        @NoArgsConstructor
        @Data
        @AllArgsConstructor
        public static class FTaxRateDTO {
            @JsonProperty("FNumber")
            private String fNumber;
        }

        @NoArgsConstructor
        @Data
        @AllArgsConstructor
        public static class FTBDCUSTOMEREXTDTO {
            @JsonProperty("FEnableSL")
            private Boolean fEnableSL;
            @JsonProperty("FALLOWJOINZHJ")
            private Boolean fallowjoinzhj;
        }

        @NoArgsConstructor
        @Data
        @AllArgsConstructor
        public static class FTBDCUSTLOCATIONDTO {
            @JsonProperty("FContactId")
            private FContactIdDTO fContactId;
            @JsonProperty("FIsDefaultConsigneeCT")
            private Boolean fIsDefaultConsigneeCT;
            @JsonProperty("FIsCopy")
            private Boolean fIsCopy;

            @NoArgsConstructor
            @Data
            public static class FContactIdDTO {
                @JsonProperty("FNUMBER")
                private String fnumber;
            }
        }

        @NoArgsConstructor
        @Data
        @AllArgsConstructor
        public static class FTBDCUSTCONTACTDTO {
            @JsonProperty("FNUMBER1")
            private String fnumber1;
            @JsonProperty("FNAME1")
            private String fname1;
            @JsonProperty("FADDRESS1")
            private String faddress1;
            @JsonProperty("FIsDefaultConsignee")
            private Boolean fIsDefaultConsignee;
            @JsonProperty("FIsDefaultSettle")
            private Boolean fIsDefaultSettle;
            @JsonProperty("FIsDefaultPayer")
            private Boolean fIsDefaultPayer;
            @JsonProperty("FIsUsed")
            private Boolean fIsUsed;
        }

        @NoArgsConstructor
        @Data
        @AllArgsConstructor
        public static class FTBDCUSTORDERORGDTO {
            @JsonProperty("FIsDefaultOrderOrg")
            private Boolean fIsDefaultOrderOrg;
        }
    }
}
